package cn.volunteer.points.system.mapper;

import cn.volunteer.points.system.annotation.PassToken;
import cn.volunteer.points.system.pojo.entity.Password;
import cn.volunteer.points.system.pojo.entity.User;
import cn.volunteer.points.system.pojo.qo.LoginQO;
import cn.volunteer.points.system.pojo.qo.RegisterQO;
import cn.volunteer.points.system.pojo.vo.UserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

/**
 * @description: 用户数据层接口
 * @author:
 * @create: 创建时间：2021-04-16
 **/
@Repository
public interface UserMapper {

    /**
     * 新增用户
     * @param user
     */
    void addUser(@Param("user") RegisterQO user);

    /**
     * 修改用户信息
     * @param user
     */
    void updateUser(@Param("user")User user);

    /**
     * 修改用户信息（管理员）
     * @param user
     */
    void updateUserAdmin(@Param("user")User user);

    /**
     * 查询用户
     * @param user
     * @return
     */
    User findUserBy(@Param("user") LoginQO user);


    User findUserByUid(@Param("userId")Integer userId);


    UserVO findById(@Param("userId") Integer userId);

    /**
     * 查询用户列表
     * @return
     */
    List<UserVO> findUserList(@Param("searchValue") String searchValue);

    /**
     * 删除用户
     * @param userId
     */
    void delUser(@Param("userId") Integer userId);

    /**
     * 用户上传参加活动图片获取积分
     * @param userId  用户ID
     * @param activityId 活动ID
     * @param picUrl   图片URL
     * @param integral 活动积分
     */
    void addIntegral(@Param("userId")int userId
                    ,@Param("activityId")int  activityId
                    ,@Param("picUrl")String picUrl
                    ,@Param("integral")int integral);


    BigDecimal getCost(@Param("id")int id);


    User findByUserName  (@Param("userName")String userName) ;


    User findByPhone (@Param("phone")String phone);

    void updatePassword(@Param("password")Password password);
}
